//输入5个学生的学号、姓名和成绩（包括3门课成绩和1个总成绩）
//将5个学生的信息按照从小到大的顺序输出
//按照学号的从高到低的顺序输出
#include <stdio.h>
#include <string.h>
typedef struct STU
{
    int IID;
    char NName[30];
    struct iScore
    {
        int yuwen;
        int shuxue;
        int yingyu;
        int Sums;
    }SScore;
}STU;
//输入学生信息，按总成绩大小升序输出信息
void ChengjiSX(STU *a,int len);
void ChengjiSX(STU *a,int len)
{
    int i=0,j=0;
    STU tem;
    for(i=0;i<len-1;i++)
    {
        for(j=0;j<len-i-1;j++)
        {
            if(a[j].SScore.Sums > a[j+1].SScore.Sums)
            {
                tem=a[j];
                a[j]=a[j+1];
                a[j+1]=tem;
            }
        }
    }
    for(i=0;i<len;i++)
    {
        printf("学号：%d\t姓名：%s\t语文:%d\t数学：%d\t英语:%d\t总成绩：%d\n",a[i].IID,a[i].NName,a[i].SScore.yuwen,a[i].SScore.shuxue,a[i].SScore.yingyu,a[i].SScore.Sums);
    }
}
//输入学生信息，按学号大小降序输出信息
void XuehaoJX(STU *a,int len);
void XuehaoJX(STU *a,int len)
{
    int i=0,j=0;
    STU tem;
    for(i=0;i<len-1;i++)
    {
        for(j=0;j<len-i-1;j++)
        {
            if(a[j].IID < a[j+1].IID)
            {
                tem=a[j];
                a[j]=a[j+1];
                a[j+1]=tem;
            }
        }
    }
    for(i=0;i<len;i++)
    {
        printf("学号：%d\t姓名：%s\t语文:%d\t数学：%d\t英语:%d\t总成绩：%d\n",a[i].IID,a[i].NName,a[i].SScore.yuwen,a[i].SScore.shuxue,a[i].SScore.yingyu,a[i].SScore.Sums);
    }
}
int main(void)
{
    STU stu[5];
    int i=0;
    for(i=0;i<5;i++)
    {
        printf("请输入第%d个学生的学号、姓名、语数英成绩：\n",i+1);
        scanf("%d%s%d%d%d",&stu[i].IID,stu[i].NName,&stu[i].SScore.yuwen,&stu[i].SScore.shuxue,&stu[i].SScore.yingyu);
        stu[i].SScore.Sums=stu[i].SScore.yuwen +stu[i].SScore.shuxue+stu[i].SScore.yingyu;
    }
    printf("按照总成绩从小到大输出为：\n");
    ChengjiSX(stu,5);
    printf("\n");
    printf("\n");
    printf("按照学号从高到低输出为：\n");
    XuehaoJX(stu,5);
    return 0;
}